JavaScript - String

JavaScript 中的对象是指带有属性和方法的特殊数据类型。JavaScript 中的所有事物都是对象,比如字符串、数组、函数等。对象分为内置对象和原生对象,它们的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集;而后者包括了一些在运行过程中动态创建的对象。从语法层面来看的话,原生对象需要使用 new 创建,而内置对象则不需要。

JavaScript 常见的内置对象有:ArrayStringMathDate 几种。

索引字符串中的字符

charAr(index)charCodeAt(index) 方法可以根据 index 下标获取字符串中的指定字符,如下:

1
2
3
4
5
var str = 'hello, world!'
var subStr = str.charAt(1);
var subStrCode = str.charCodeAt(1);
console.log(subStr); //log: e
console.log(subStrCode); //log: 101

这里的 101eUnicode 编码。如越界,返回值是空的。

获子字符串在字符串的下标

indexOf()lastIndexOf() 用于获取指定字符在字符串中的位置,区别在于 indexOf() 是从前往后索引,lastIndexOf() 是从后往前索引,如未检索到指定字符,返回 -1。它可以接收子串,而不是单一字符。

截取字符串

JavaScript 中字符串的截取主要有以下 3 种方法:

slice()

slice() 方法有两个参数:

形参 描述
start 必需,指定子字符串的起始位置。
end 可选,表示结束位置,end 本身不会被截取。
1
2
3
var str = 'hello world!'
var subStr = str.slice(-5, -3);
console.log(subStr);

substring()

substring() 方法的参数和使用方法与 slice() 相同,不同的地方在于参数不支持负数,如果传入的参数是负数,会将参数转换为 0 处理。且 substring() 会认为较大的数值是结束位置,较小的数值是开始位置,与形参的顺序无关。

substr()

形参 描述
start 必需,子字符的起始位置。
len 可选,子字符串的长度。

start 为负数时,起始位置等于传入的负值与字符串长度相加,len 为负数时,返回空字符串。

分割字符串

split() 方法可以将字符串转为数组,参数是一个分隔符:

1
2
3
4
var str = 'welcome-to-beijing';
var strArr = str.split('-');
console.log(strArr);
//log: ["welcome", "to", "beijing"]

替换字符串

replace() 方法用于替换字符串,有两个参数:

形参 描述
regexp 规定子字符串或要替换的模式
replacement 替换后的值
1
2
3
4
5
6
var tel = '010-76578980,400-100-6789,010-86432906';
var newTel = tel.replace(',',' ');
console.log(tel);
//log: 010-76578980,400-100-6789,010-86432906
console.log(newTel);
//log: 010-76578980 400-100-6789,010-86432906

大小写转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var str = 'hello world!'
var upper = firstCharTo(true,str);
console.log(upper);
var lower = firstCharTo(false,str);
console.log(lower);
function firstCharTo(isUpper, str) {
var strArr = str.split(' ');
var upperStrArr = [];
for (var i = 0; i < strArr.length; i++) {
var firstChar = strArr[i].charAt(0)
if (isUpper) {
upperStrArr[i] = strArr[i].replace(firstChar, firstChar.toUpperCase());
}
else {
upperStrArr[i] = strArr[i].replace(firstChar, firstChar.toLowerCase());
}
}
return upperStrArr.join(' ');
}